package dao

import (
	"fmt"
	"manhe/model"
	"manhe/tool"
)

type BlindBoxDao struct {
}

// 创建盲盒
func (*BlindBoxDao) AddBlindBox(box model.BindBox) bool {
	//err := this.Create(&box).Error
	err := tool.DB.Create(&box).Error
	if err != nil {
		return false
	}
	//更新redis 盲盒奖品的库存信息
	a := len(box.BoxPcs)
	for i := 0; i < a; i++ {
		for _, v := range box.BoxPcs[i].BatchPrizes {
			fmt.Println("奖品ID:", v.ID, "奖品库存:", v.PrizeNum)
			key := fmt.Sprintf("%d", v.ID)
			vaule := fmt.Sprintf("%d", v.PrizeNum)
			tool.Rdclien.Set("Mh_Prize_Id:"+key, vaule, 0)
		}
	}

	return true
}

// 修改盲盒信息
func (*BlindBoxDao) Modifybindbox(box model.BindBox) bool {
	err := tool.DB.Save(&box).Error
	if err != nil {
		return false
	}
	//更新redis 盲盒奖品的库存信息
	return true
}

// 查询盲盒详情信息
func (*BlindBoxDao) Getbindbox(id int) (*model.BindBox, error) {

	var bindbox model.BindBox

	err := tool.DB.Preload("BoxPcs.BatchPrizes").Where("id = ?", id).Find(&bindbox).Error

	if err != nil {

		return nil, err
	}

	return &bindbox, nil
}

// 分页查询盲盒列表信息
func (*BlindBoxDao) Getbindboxlist(boxlist *model.Boxlist, box *model.BindBox) ([]model.BindBox, error) {
	var bindboxs []model.BindBox
	offset := (boxlist.PageNum - 1) * boxlist.PageSize

	err := tool.DB.Where(box).Limit(boxlist.PageSize).Offset(offset).Find(&bindboxs).Error
	if err != nil {
		return nil, err
	}
	return bindboxs, nil
}

// 查询盲盒的总条数
func (*BlindBoxDao) CountBindBox(box *model.BindBox) (*int, error) {
	var count int
	tool.DB.Table("mh_binbox").Where(box).Count(&count)
	return &count, nil
}

// 查询盲盒批次的奖品内容信息
func (*BlindBoxDao) GetBoxPrize(prize model.BatchPrize) bool {
	return false
}
